package org.springblade.modules.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.modules.admin.dto.BuildingElevatorDTO;
import org.springblade.modules.admin.entity.BuildingElevatorVisitor;
import org.springblade.modules.admin.vo.BuildingAlreadyVO;
import org.springblade.modules.admin.vo.BuildingElevatorVO;
import org.springblade.modules.admin.vo.BuildingElevatorVisitorVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * @author: Sharry
 * @createTime: 2023/4/10 10:26
 * @version: Version-1.0
 */
public interface IBuildingElevatorVisitorService extends BaseService<BuildingElevatorVisitor> {
	/**
	 * 根据 项目名称 获取项目-电梯列表
	 * @param
	 * @return 项目-电梯列表
	 */
	List<BuildingElevatorVO> getListByBuildingName(Map<String,String> param);

	/**
	 * 根据项目-电梯列表 新增可报障电梯
	 * @param buildingElevatorList 项目-电梯列表
	 * @return 是否成功
	 */
    Boolean addElevators(List<BuildingElevatorDTO> buildingElevatorList);

	/**
	 * 根据项目-电梯列表，获取已选电梯
	 * @param buildingElevatorList 获取依据
	 * @return 已选电梯，并可用于插入关联表
	 */
	List<BuildingElevatorDTO> getBuildingElevatorSelected(List<BuildingElevatorVO> buildingElevatorList);

	/**
	 * 根据 buildingId 获取已添加电梯详情
	 * @param buildingId 项目id
	 * @return 电梯详情列表
	 */
	List<BuildingElevatorVisitorVO> getVisitorsElevatorsById(Long buildingId);

	/**
	 * 获取 所有项目 可报障电梯统计
	 * @return 统计列表
	 */
	List<BuildingAlreadyVO> getAlready();

	/**
	 * 根据项目id 批量删除
	 * @param id 项目id
	 * @return 是否成功
	 */
	Boolean removeByBuildingId(Long id);

	/**
	 * 根据电梯id 批量删除
	 * @param elevatorIds 电梯id列表
	 * @return 是否成功
	 */
	Boolean removeByElevatorIds(List<Long> elevatorIds);

	/**
	 * 获取 项目-电梯 树
	 * @return 项目-电梯树
	 */
	List<BuildingElevatorVO> getTree();

	/**
	 * 物理删除全部
	 * @param tenantId
	 */
	void deleteALL(String tenantId);
}
